1、 一般多点触摸屏涉及的内容
	1） 触摸屏一般采用 IIC 接口，所以需要用到 IIC 框架，部分触摸屏也可能采用 SPI 接口
	2） 触摸屏一般需要一个中断引脚告知触摸状态，所以还需要用到中断框架
	3） 触摸屏属于输入设备，需要用到 input 子系统，具体使用的是 input 子系统下的多点电容触摸（MT）协议
2、 多点电容触摸（MT）协议
	MT 协议被分为两种类型，分别是 Type A 和 Type B ： 
		Type A ：适用于触摸点不能被区分或者追踪的设备（即硬件上没有触摸 ID ），此类型的设备上报原始数据
		Type B ：适用于有硬件追踪并能区分触摸点的触摸设备，此类型设备通过 slot 更新某一个触摸点的信息
	触摸点的信息通过一系列的 ABS_MT 事件上报给 linux 内核，常用的 ABS_MT 事件有：
		ABS_MT_SLOT ：表示后面上报的是相应 slot 的触摸信息
		ABS_MT_TRACKING_ID ：上报触摸 ID 事件
		ABS_MT_POSITION_X ：上报绝对坐标X
		ABS_MT_POSITION_Y ：上报绝对坐标Y
	对于 Type B 类型采用 ABS_MT_SLOT 分割触摸点，并用 ABS_MT_TRACKING_ID 上报触摸点 ID，对于 Type A 类型则采
用SYN_MT_REPORT 事件来分割触摸点。
3、 多点触摸所常用 API 
	初始化 slots
	dev ：MT 设备对应的 input_dev
	num_slots ：设备要使用的 SLOT 数量，也就是触摸点的数量
	flags :其他一些 flags 信息，如 INPUT_MT_POINTER 表示触摸板设备，INPUT_MT_DIRECT 表示触摸屏设备
	int input_mt_init_slots( struct input_dev *dev, unsigned int num_slots, unsigned int flags)
	通过 slot 产生 ABS_MT_SLOT 事件
	dev ：MT 设备对应的 input_dev
	slot ：指定产生 ABS_MT_SLOT 事件 slot
	void input_mt_slot(struct input_dev *dev, int slot)
	上报触摸点的状态，用于产生 ABS_MT_TRACKING_ID 和 ABS_MT_TOOL_TYPE 事件
	dev ：MT 设备对应的 input_dev
	tool_type ：触摸类型， MT_TOOL_FINGER (手指)、 MT_TOOL_PEN (笔)、 MT_TOOL_PALM (手掌)
	active ：触摸状态， true 表示按下，如果是第一次按下系统会为其分配一个 ID ，false 表示抬起
	bool input_mt_report_slot_state( struct input_dev *dev, unsigned int tool_type, bool active)
	上报绝对坐标事件
	dev ：MT 设备对应的 input_dev
	code ：事件类型，ABS_MT_POSITION_X 或 ABS_MT_POSITION_Y 分别表示 X 轴和 Y 轴，
	value ： X 轴或 Y 轴坐标值
	void input_report_abs( struct input_dev *dev,unsigned int code, int value)
	单点触摸模拟
	dev ：MT 设备对应的 input_dev
	use_count ：为 true 则要上报触摸点数
	void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count)
	用于产生 SYN_MT_REPORT 事件
	dev ：MT 设备对应的 input_dev
	void input_mt_sync(struct input_dev *dev)
	上报触摸坐标
	input ：MT 设备对应的 input_dev
	prop ：prop触摸屏特性
	x,y ：触摸坐标
	multitouch ：是否是多点触摸，true表示多点触摸
	void touchscreen_report_pos(struct input_dev *input, const struct touchscreen_properties *prop, 
								unsigned int x, unsigned int y, bool multitouch)
	根据设备树配置初始化触摸屏特性
	input ：MT 设备对应的 input_dev
	multitouch ：是否是多点触摸，true表示多点触摸
	prop ：prop触摸屏特性
	void touchscreen_parse_properties(struct input_dev *input, bool multitouch, 
									struct touchscreen_properties *prop)
4、 上报触摸事件
	Type A 上报顺序：
		1） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第一个触摸点的 X 坐标数据，input_report_abs
		2） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第一个触摸点的 Y 坐标数据，input_report_abs
		3） SYN_MT_REPORT		上报 SYN_MT_REPORT 事件，input_mt_sync
		4） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第二个触摸点的 X 坐标数据
		5） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第二个触摸点的 Y 坐标数据
		6） SYN_MT_REPORT		上报 SYN_MT_REPORT 事件
		......					继续上报剩余的坐标
		7） SYN_REPORT			上报 SYN_REPORT 事件，input_sync
	Type B 上报顺序：
		1） ABS_MT_SLOT			上报第一个触摸点的 ABS_MT_SLOT 事件，input_mt_slot
		2） ABS_MT_TRACKING_ID	通过 ABS_MT_TRACKING_ID 上报第一个触摸点的 ID，input_mt_report_slot_state
		3） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第一个触摸点的 X 坐标数据，input_report_abs
		4） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第一个触摸点的 Y 坐标数据，input_report_abs
		5） ABS_MT_SLOT			上报第二个触摸点的 ABS_MT_SLOT 事件
		6） ABS_MT_TRACKING_ID	通过 ABS_MT_TRACKING_ID 上报第二个触摸点的 ID
		7） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第二个触摸点的 X 坐标数据
		8） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第二个触摸点的 Y 坐标数据
		......
		9） SYN_REPORT			上报 SYN_REPORT 事件，input_sync
